//
// Created by 86131 on 2023/9/9.
//
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 10
//typedef enum {false, true} bool;
typedef int ElementType;

typedef int Position;
typedef struct LNode *List;
struct LNode {
    ElementType Data[MAXSIZE];
    Position Last; /* 保存线性表中最后一个元素的位置 */
};

List ReadInput(); /* 读入线性表。元素从下标0开始存储 */
void PrintList( List L ); /* 输出线性表 */
bool Insert( List L, ElementType X );

int main()
{
    List L;
    ElementType X;

    L = ReadInput();
    scanf("%d", &X);
    if ( Insert( L, X ) == false )
        printf("Insertion failed.\n");
    PrintList( L );

    return 0;
}
List ReadInput() {
    List L;
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&(L->Data[i]));
    L->Last = n-1;
    return L;
}
void PrintList(List L){
    for(int i=0;i<=L->Last;i++)
        printf("%d ", L->Data[i]);
    printf("\nLast = %d\n",L->Last);
    free(L);
}
/* 你的代码将被嵌在这里 */
bool Insert(List L, ElementType X){
    if(L->Last+1==MAXSIZE){return false;}
    for(int i=0;i<L->Last+1;i++){
        if(i==L->Last){L->Data[i+1]=X;L->Last++;return true;}
        if(X<L->Data[i]){continue;}
        if(X==L->Data[i]){return false;}
        int n;
        for(int j=i;j<L->Last+2;j++){
            n=L->Data[j];
            L->Data[j]=X;
            X=n;
        }
        L->Last++;
        return true;
    }
}